/////////////////////////////////////////////////////////////////////////////
//                                                                         //
// <common.h> - Common module.                                             //
//                                                                         //
// Version :        0.0.1                                                  //
// Language :       C                                                      //
// Platform :       Linux                                                  //
// Application :    TR069                                                  //
// Author :         Ireta                                                  //
// Created Date :   2012_07_27                                             //
// Header :                                                                //
//                                                                         //
/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////
//                           Maintenance                                   //
/////////////////////////////////////////////////////////////////////////////

/*
 Version  Modified By  Date        Remarks
 =============================================================================
 0.0.1	   Ireta        2012-07-27  Basic initiate
 */

#ifndef COMMON_H
#define COMMON_H

/////////////////////////////////////////////////////////////////////////////
//                           Headers                                       //
/////////////////////////////////////////////////////////////////////////////

#include <stdlib.h>
#include <stdio.h>

#ifdef WIN32
#include <windows.h>
#define sleep(x) Sleep(1000*x)
#define usleep(x) Sleep(0.001*x)
#endif

# ifdef __cplusplus
extern "C" {
# endif

typedef unsigned int uint; // 4 bytes
typedef unsigned short ushort; // 2 bytes

#ifndef DISABLE_DEBUG
#define DPRINTF(format, args...) {printf("[DEBUG: %s:%d] "format, __FUNCTION__, __LINE__, ##args); fflush(stdout);}
#define EPRINTF(format, args...) {printf("[ERROR: %s:%d] "format, __FUNCTION__, __LINE__, ##args); fflush(stdout);}
#else
#define DPRINTF(format, args...)
#define EPRINTF(format, args...)
#endif

#define SAFE_FREE(x) {if (x) free(x);}
#define ARRAY_SIZE(a)  (sizeof(a)/sizeof(a[0]))

/////////////////////////////////////////////////////////////////////////////
//                      Constant Declarations                              //
/////////////////////////////////////////////////////////////////////////////
#define STRING_MIN2_LENGTH		33 // 32 + '\0'
#define STRING_MIN_LENGTH		65 // 64 + '\0'
#define STRING_MID2_LENGTH		129 // 128 + '\0'
#define STRING_MID_LENGTH		257 // 256 + '\0'
#define STRING_MAX2_LENGTH		513 // 512 + '\0'
#define STRING_MAX_LENGTH		1025 // 1024 + '\0'
#define STRING_2MAX_LENGTH		2049 // 2048 + '\0'
#define FILE_NAME_LENGTH 	STRING_MIN_LENGTH
#define FILE_PATH_LENGTH 	STRING_MID_LENGTH
#define USER_NAME_LENGTH 	STRING_MID_LENGTH
#define USER_PASSWD_LENGTH 	STRING_MID_LENGTH
#define URL_PATH_LENGTH 	STRING_MID_LENGTH
#define SYSTEM_CMD_LENGTH 	STRING_MID_LENGTH

# ifdef __cplusplus
}
# endif

#endif // COMMON_H
